<?php


// 编码声明

use LDAP\Result;

header("Content-Type:text/html;charset=utf-8");

//封装的函数库

/**
    消息提醒
    @param string $msg 提醒的内容
    @param string $url 跳转的地址，如果没给，就默认返回上一页
*/
function notice($msg = '', $url = '')
{
    if(empty($url)) //没有跳转地址 返回上一个界面
    {
        echo "<script>alert('$msg');history.go(-1);</script>";
    }else //有地址，就跳转到指定的地址去
    {
        echo "<script>alert('$msg');location.href='$url';</script>";
    }
}
/** 
    强制删除的递归
    @param string $dir 路径
    @return boolean 成功删除返回 true 删除失败返回false

  */
function DelDir($dir = ''){
    // 先是读取文件的路径
    if(is_file($dir)) {
        @unlink($dir);
    }
    $list = scandir($dir);
    // 进行遍历
    foreach($list as $item){
        if($item == '.'||$item == '..'){
            continue;
        }
        // 将文件进行拼接 
        $cur = $dir.'/'.$item;
        if(is_file($cur)){
            @unlink($cur);
        }
        if(is_dir($cur)){
            DelDir($cur);
        }
    }
    return rmdir($dir);
}
/**
    文件上传
 * @param string $msg 用于对错的内容
 * @param string $input 表单中input[file]name名字
 * @param string $result 判断对错
 * @return array[result=>true|false msg=>'上传成功和失败的原因' ]数组内部存储
 */
// 首先存在默认的地址

function UploadFile($input = 'file',$path = ''){
    $success = ['result'=>false,'msg'=>'','data'=>''];
    //获取文件对象 name
    $file = $_FILES[$input];
    //上传失败会出现的情况
    // var_dump($file['error']);error属性
    // exit;
    if($file['error']>0){
        switch($file['error']){
            case 1:
                $success['msg'] = '文件上传大小超过了服务器的限制';
                break;
            case 2:
                $success['msg'] = '上传文件大小超出指定的值';
                break;
            case 3:
                $success['msg'] = '网络中断';
                break;
            case 4:
                $success['msg'] = '无文件上传';
                break;
            default:
                $success['msg'] = '未知错误';
                
        }
        return $success;
    }
    //上传成功后给文件重新命名
    //获取文件的后缀
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);

    // 获取文件名
    $name = pathinfo($file['name'],PATHINFO_FILENAME);

    //获取时间挫
    $time = time();
    //随机数
    $rand = mt_rand(1111,9999);
    //拼接
    $filename = "{$name}_{$time}_{$rand}.$ext";

    //判断如果当前目录不存在 ，就直接失败
    if(!is_dir($path)){
        $success['msg']= '当前目录不存在';
        return $success;
    }
    //拼接路径
    $filename = $path.'/'.$filename;
    // var_dump($filename);
    // exit;

    //判断文件是否能够通过post上传
    if(!is_uploaded_file($file['tmp_name'])){
        $success['msg']= '文件上传不合法';
    }
    // var_dump(move_uploaded_file($file['tmp_name'], $filename));
    // exit;
    //临时的文件移动到指定目录下
    if(move_uploaded_file($file['tmp_name'], $filename)){
        $success['result']=true;
        $success['msg']= '文件上传成功';
        $success['data'] = $filename;
        // var_dump($filename);
        // exit;
    }
    else{
        $success['msg']= '文件上传失败';
    }
    return $success;
    //文件上传前的临时文件名字
    // var_dump($file['tmp_name']);
    // exit;


    // 获取文件名加后缀
    //name相当于 file里面的key
    // var_dump($file['name']);
    // exit;

}

//批量删除
function FileDeleteAll($dir){
    foreach($dir as $k =>$v){
        var_dump($v);
        DelDir($v);
    }
}


//文件夹统计大小
/**
 * 递归统计文件夹的大小
 * @param * $dir
 * @return number 返回的是统计的大小（以字节为单位的大小）
 */

 function DirSize($dir=''){
    $list = scandir($dir);
    $number = 0;
    $sum ='';
   foreach($list as $item){
    if($item == "." || $item == "..")
    {
        continue;
    }

    //拼接子文件的完整路径
    $cur = $dir.'/'.$item;

    //如果是文件
    if(is_file($cur))
    {     
        $number+=filesize($cur);
        $b = $number;
        $kb = ($b/1024);
        $mb = ($kb/1024);
        $gb = ($mb/1024);
        if($number <=1024){
            $sum = round($b,2).'B';
        }
        else if($b >=1024){
            $sum = round($b/1024,2).'KB'; 
        }
        else if($kb >=1024){
            $sum = round($kb/1024,2).'MB';
        }
        else if($mb >=1024){
            $sum = round($mb/1024,2).'GB';
        }
    }
    //如果是文件夹
    if(is_dir($cur))
    {
        DirSize($cur);
    }
    }
    // b kb mb gb转化
    $b = 0;
    $kb = 0;
    $mb = 0;
    $gb = 0;


    return $sum;

    
}
/**
 * 文件大小单位换算
 * @param * $size
 * @return *
 */
function SizeUnit($size = 0)
{
    //字节(B) KB MB GB TB  1024
    $num = '';
    $b = $size;
    $kb = ($b/1024);
    $mb = ($kb/1024);
    $gb = ($mb/1024);
    if($size <=1024){
        $num = rand($b,2).'B';
    }
    else if($b >=1024){
        $num = round($b/1024,2).'KB'; 
    }
    else if($kb >=1024){
        $num = round($kb/1024,2).'MB';
    }
    else if($mb >=1024){
        $num = round($mb/1024,2).'GB';
    }
    return $num;
}
//上传多个文件
function UploadFiles($input,$path = ''){
    $success = ['result'=>false,'msg'=>'','data'=>''];
    //获取文件对象 name
        $file = $_FILES[$input]; 
        var_dump($file);
        exit;

        foreach($file['name'] as $key => $value){
            if($file['error'][$key]>0){
                switch($file['error']){
                    case 1:
                        $success['msg'] = '文件上传大小超过了服务器的限制';
                        break;
                    case 2:
                        $success['msg'] = '上传文件大小超出指定的值';
                        break;
                    case 3:
                        $success['msg'] = '网络中断';
                        break;
                    case 4:
                        $success['msg'] = '无文件上传';
                        break;
                    default:
                        $success['msg'] = '未知错误';
                        
                }
                return $success;
            }
            //上传成功后给文件重新命名
            //获取文件的后缀
            $ext = pathinfo($file['name'][$key], PATHINFO_EXTENSION);
                // 获取文件名
            $name = pathinfo($file['name'][$key],PATHINFO_FILENAME);
            // var_dump($ext);
            // exit;
            //获取时间挫
            $time = time();
            //随机数
            $rand = mt_rand(1111,9999);
            //拼接
            $filename = "{$name}_{$time}_{$rand}.$ext";
            // var_dump($filename);
            // exit;
        
            //判断如果当前目录不存在 ，就直接失败
            if(!is_dir($path)){
                $success['msg']= '当前目录不存在';
                return $success;
            }
            //拼接路径
            $filename = $path.'/'.$filename;
            // var_dump($filename);
            // exit;
            //判断文件是否能够通过post上传
            // var_dump($file["tmp_name"]);

            if(!is_uploaded_file($file['tmp_name'][ $key ])){
                $success['msg']= '文件上传不合法';

            }
            // exit;
            //临时的文件移动到指定目录下
            
            // var_dump($file['tmp_name'][ $key ]);
            // exit;
            if(move_uploaded_file($file['tmp_name'][ $key ], $filename)){
                
                $success['result']=true;
                $success['msg']= '文件上传成功';
                $success['data'] = $filename;
                
            }
            else{
                $success['msg']= '文件上传失败';
            }

            
        }
        return $success;
}


